// package com.hyf.processor.test;
//
// import java.io.IOException;
// import java.io.Writer;
// import java.lang.annotation.Annotation;
// import java.util.List;
// import java.util.Set;
//
// import javax.annotation.processing.AbstractProcessor;
// import javax.annotation.processing.RoundEnvironment;
// import javax.annotation.processing.SupportedAnnotationTypes;
// import javax.lang.model.element.*;
// import javax.lang.model.type.DeclaredType;
// import javax.lang.model.type.TypeMirror;
// import javax.tools.JavaFileObject;
//
// /**
//  * @author baB_hyf
//  * @date 2020/11/23
//  */
// @SupportedAnnotationTypes("com.hyf.processor.test.Getter")
// public class TestProcessor extends AbstractProcessor {
//
//     @Override
//     public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
//
//         StringBuilder sb = new StringBuilder();
//
//         // sb.append("package com.hyf.processor.test;\npublic class User{ private String name; }");
//
//
//         for (Element element : roundEnv.getElementsAnnotatedWith(Getter.class)) {
//             System.out.println(element.getSimpleName());
//             ElementKind kind = element.getKind();
//             System.out.println(kind.isClass());
//             System.out.println(kind.isField());
//             System.out.println(kind.isInterface());
//             TypeMirror typeMirror = element.asType();
//             System.out.println(kind.name());
//             List<? extends AnnotationMirror> annotationMirrors = typeMirror.getAnnotationMirrors();
//             for (AnnotationMirror annotationMirror : annotationMirrors) {
//                 DeclaredType annotationType = annotationMirror.getAnnotationType();
//                 List<? extends TypeMirror> typeArguments = annotationType.getTypeArguments();
//                 for (TypeMirror typeArgument : typeArguments) {
//                     System.out.println(typeArgument);
//                 }
//                 TypeMirror enclosingType = annotationType.getEnclosingType();
//                 System.out.println(enclosingType);
//                 Element element1 = annotationType.asElement();
//                 System.out.println(element1);
//             }
//
//             Set<Modifier> modifiers = element.getModifiers();
//             for (Modifier modifier : modifiers) {
//                 System.out.println(modifier.name());
//             }
//
//
//
//
//             // sb.append(objectType).append(" say hello!\\n");
//         }
//
//
//         // try {
//         //     JavaFileObject source = processingEnv.getFiler().createClassFile("com.hyf.processor.User");
//         //     Writer writer = source.openWriter();
//         //     writer.write(sb.toString());
//         //     writer.flush();
//         //     writer.close();
//         // } catch (IOException e) {
//         //     e.printStackTrace();
//         // }
//
//         return true;
//     }
// }
